#ifndef ALIGNMENT_REGION_H_
#define ALIGNMENT_REGION_H_

// INCLUDES //
#include "region.h"
#include "render_manager.h"
#include "object.h"
//////////////

// CONSTANTS //
#define ALIGNMENT_WIDTH				50
#define ALIGNMENT_HEIGHT			50
#define ALIGNMENT_CONTENT_SPACING	5
///////////////

/**
* A region that represents the player alignment.
* 
* @author dfoelber
**/
class AlignmentRegion : public Region
{
public:
	/**
	* Constructor
	**/
	AlignmentRegion();
	
	/**
	* Destructor
	**/
	virtual ~AlignmentRegion();
	
	/**
	* Sets the region's boundary.
	* 
	* Overridden from Region.
	* 
	* @param x The boundary's X coordinate
	* @param y The boundary's Y coordinate
	* @param width The boundary's width
	* @param height The boundary's height
	**/
	virtual void SetBoundary( int x, int y, int width, int height );
	
	/**
	* Gets the red alignment.
	* 
	* @return Red alignment
	**/
	int GetRedAlignment() { return red; }
	
	/**
	* Gets the blue alignment.
	* 
	* @return Blue alignment
	**/
	int GetBlueAlignment() { return blue; }
	
	/**
	* Gets the yellow alignment.
	* 
	* @return Yellow alignment
	**/
	int GetYellowAlignment() { return yellow; }
	
	/**
	* Gets the green alignment.
	* 
	* @return Green alignment
	**/
	int GetGreenAlignment() { return green; }
	
	/**
	* Gets the white alignment.
	* 
	* @return White alignment
	**/
	int GetWhiteAlignment() { return white; }
	
	/**
	* Gets the black alignment.
	* 
	* @return Black alignment
	**/
	int GetBlackAlignment() { return black; }
	
private:
	/**
	* Creates the surface for a given alignment object.
	* 
	* @param object The alignment object
	* @param color The alignment color
	* @param value The alignment value
	**/
	void SetAlignmentSurface(Object* object, Color color, int value);
	
private:
	/// Red alignment
	int			red;
	/// Red alignment object
	Object*		redObject;
	/// Blue alignment
	int			blue;
	/// Blue alignment object
	Object*		blueObject;
	/// Yellow alignment
	int			yellow;
	/// Yellow alignment object
	Object*		yellowObject;
	/// Green alignment
	int			green;
	/// Green alignment object
	Object*		greenObject;
	/// White alignment
	int			white;
	/// White alignment object
	Object*		whiteObject;
	/// Black alignment
	int			black;
	/// Black alignment object
	Object*		blackObject;
};

#endif /*ALIGNMENT_REGION_H_*/
